//
//  XCUITestDemoUITests.swift
//  XCUITestDemoUITests
//
//  Created by  qitmac001420 on 2025/6/23.
//

import XCTest

final class XCUITestDemoUITests: XCTestCase {

    override func setUpWithError() throws {
        // Put setup code here. This method is called before the invocation of each test method in the class.

        // In UI tests it is usually best to stop immediately when a failure occurs.
        continueAfterFailure = false
        
        print("XCUITestDemoUITests-setUpWithError  XXXX")
        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
    }

    override func tearDownWithError() throws {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
        print("XCUITestDemoUITests-tearDownWithError  XXXX")
    }

    @MainActor
    func testExample() throws {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()
        
        print("testExample  XXXXX")
        // 通过 accessibilityIdentifier 获取静态文本控件
        let welcomeLabel = app.staticTexts["hello-world-identifier"]
        print(welcomeLabel.label)
        
        let but = app.buttons["button-00"]
        but.tap()
        
        let alert = app.alerts.firstMatch
        XCTAssertTrue(alert.waitForExistence(timeout: 5), "Alert did not appear")

        // 点击警告框的按钮来关闭它
        alert.buttons["OK"].tap()
        
        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }

    @MainActor
    func testLaunchPerformance() throws {
        if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
            // This measures how long it takes to launch your application.
            measure(metrics: [XCTApplicationLaunchMetric()]) {
                XCUIApplication().launch()
            }
        }
    }
}
